home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 10 / FM Towns Free Software Collection 10.iso / ms_dos / tool / mercury / diettsr.c < prev    next >
Text File  |  1994-12-07  |  1KB  |  63 lines

  1. /*
  2.  
  3. MercuryInstaller for MS-DOS
  4.  
  5. DIET常駐ルーチン制御
  6.  
  7. */
  8.  
  9. #include<stdlib.h>
  10. #include<dos.h>
  11. #include"mercury.h"
  12.  
  13. /*---------------------------------変数--------------------------------------*/
  14. static    int    Diet_mode;    /* Dietの初期状態のフラグ */
  15.                 /* -1...常駐していない    */
  16.                 /*  0...常駐機能無効      */
  17.                 /*  1...常駐機能有効      */
  18. /*-------------------------------モード設定----------------------------------*/
  19. extern    void    diet_setmode(bool mode)
  20. {
  21.     union    REGS    regs;
  22.  
  23.     if    (Diet_mode==-1)
  24.         return;
  25.  
  26.     regs.x.ax = 0x37d3;
  27.     regs.x.bx = 0x899d;
  28.     regs.x.dx = !mode;
  29.     intdos(®s,®s);
  30. }
  31. /*-------------------------------終了時の処理--------------------------------*/
  32. static    void    diet_end(void)
  33. {
  34.     diet_setmode(Diet_mode);
  35. }
  36. /*-------------------------------初期設定------------------------------------*/
  37. extern    void    diet_init(void)
  38. {
  39.     union    REGS    regs;
  40.  
  41.     regs.x.ax = 0x37d0;
  42.     regs.x.bx = 0x899d;
  43.     intdos(®s,®s);
  44.  
  45.     if    ((signed char)regs.h.al==-1)
  46.     {
  47.         Diet_mode = -1;
  48.         return;
  49.     }
  50.  
  51.     regs.x.ax = 0x37d2;
  52.     regs.x.bx = 0x899d;
  53.     intdos(®s,®s);
  54.  
  55.     Diet_mode = !regs.h.dl;        /* DL==0が常駐機能有効を表すが */
  56.                     /* C言語の慣習に合わせる       */
  57.  
  58.     diet_setmode(1);        /* 常駐機能ON */
  59.  
  60.     atexit(diet_end);
  61. }
  62. /*-----------------------------End of DIETTSR.C------------------------------*/
  63.